package com.atguigu.spzx.manager.service;

import com.atguigu.spzx.common.entity.SysUser;
import com.atguigu.spzx.manager.vo.sysUser.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;

@Service
public interface SysUserService {

    /**
     * 条件分页查询用户
     *
     * @param pageParam 分页参数
     * @param sysUserQueryReqVo 查询条件
     * @return 分页结果
     */
    Page<SysUserQueryRespVo> getUserPageByQuery(Page<SysUser> pageParam, SysUserQueryReqVo sysUserQueryReqVo);

    /**
     * 添加用户
     *
     * @param sysUserSaveReqVo 用户信息
     */
    void saveUser(SysUserSaveReqVo sysUserSaveReqVo);

    /**
     * 根据用户ID查询用户
     *
     * @param id 用户ID
     * @return 用户信息
     */
    SysUserQueryRespVo getUserById(Long id);

    /**
     * 修改用户信息
     *
     * @param sysUserUpdateReqVo 修改后的用户信息
     */
    void updateUserById(SysUserUpdateReqVo sysUserUpdateReqVo);

    /**
     * 根据用户ID逻辑删除用户
     *
     * @param id 用户ID
     */
    void deleteUserById(Long id);

    /**
     * 更改用户状态
     *
     * @param id 用户ID
     * @param status 用户状态
     */
    void updateStatusById(Long id, Integer status);

    /**
     * 获取用户的角色数据
     *
     * @param userId 用户ID
     * @return 用户角色列表
     */
    SysUserAssignRoleQueryRespVo getAssignedRoleListByUserId(Long userId);

    /**
     * 用户分配角色
     *
     * @param reqVo 分配角色请求
     */
    void assignRoleForUser(SysUserAssignRoleReqVo reqVo);
}
